package com.cskaoyan.javase.oop3._2inner._3local._3notice;

/**
 * 局部内部类在使用时，要特别注意：
 * 在局部内部类的成员方法中，如果想要访问作用域内部的局部变量，那么该变量：
 *      1.要么直接就用final修饰，是一个局部常量。
 *      2.要么就是一个事实上的常量，即只能赋值一次，相当于用final修饰它。
 *
 * 补充:
 * 在Java7之前的版本,在局部内部类成员方法中访问作用域内部类的局部变量
 * 该局部变量必须直接声明为final
 * 但是Java8之后不需要这么做
 *
 * @since 09:51
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
    }
}

class EnclosedClazz {
    // 外围类的成员方法
    void test() {
        // a是test方法作用域内部的局部变量
        int a = 10;
        class Inner {
            // 外围类成员方法中的局部内部类的成员方法
            void testInner() {
                System.out.println(a);
                // Variable 'a' is accessed from within inner class, needs to be final or effectively final
                // a = 100;
            }
        }
    }
}